在本系列文中,所有的程式碼都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-24
並且有測試可以讓大家練習。
Array ADT
還有很多有用的 function,今天介紹一些比較常用、容易使用的 function。
*WithIndex
*WithIndex
類型的 function 擁有和原 function 相同的功能,但可以多獲得 index 來進行額外的處理/限制,以下範例。
// filterWithIndex
pipe(
xs, // [-3, 1, -2, 5];
A.filterWithIndex((i, x) => x > 0 && i <= 2) // [1];
);
平常開法有時候會想要使用 map
, filter
, forEach
等等 function,但又需要 index 的屬性,在之前只能勉為其難使用 for
迴圈,現在可以使用 Array ADT
中 *WithIndex
系列的函數來使程式碼更加簡便。
partition
函式是將輸入的 array
依照條件進行分離,符合條件的為 right
, 否則 left
,以下範例。
// partition
pipe(
xs, // ['a', 1, {}, 'b', 5];
A.partition(isString) // { left: [1, {}, 5], right: ['a', 'b'] };
)
partition
的使用情境也是很常見的,有時候我們不僅想要使用 filter
,也想要原陣列的另一部分,這時候就可以考慮使用 partition
。
今天的主題在 should-i-use-fp-ts 在 src/day-24
並且有測試可以讓大家練習。